{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### LSTM长短记忆网络\n",
    "\n",
    "    LSTM 由Hochreiter & Schmidhuber 于1997年提出，通过门控单元改善了RNN长期依赖问题。 \n",
    "    Sepp Hochreiter,Jurgen Schmidhuber.LONG SHORT-TERM MEMORY.Neural Computation,December 1997.\n",
    "    \n",
    "    门限：[0,1]\n",
    "    输入门（门限）：it = sigmoid(Wi * [ht_1 , xt ] + bi)\n",
    "    遗忘门（门限）：ft = sigmoid(Wf * [ht_1 , xt ] + bf)\n",
    "    输出门（门限）：ot = sigmoid(Wo * [ht_1 , xt ] + bo)\n",
    "    \n",
    "    细胞态（长期记忆）：Ct = ft* Ct_1 + it*Ct~\n",
    "                      (过去)  （现在）\n",
    "    \n",
    "    记忆体（短期记忆）： ht = ot * tanh(Ct)\n",
    "                    长期记忆经过输出门筛选后的内容\n",
    "    \n",
    "    候选态（归纳出的新知识）：Ct~ = tanh(Wc * [  ht_1  ,    xt   ] + bc)\n",
    "                              （上一时刻）  （当前时刻）\n",
    "                              \n",
    "    \n",
    "### TF描述LSTM\n",
    "    tf.keras.layers.LSTM(记忆体个数，return_sequences=是否返回输出) \n",
    "    return_sequences=True  各时间步输出ht \n",
    "    return_sequences=False 仅最后时间步输出ht（默认）\n",
    "    \n",
    "    例：\n",
    "    model = tf.keras.Sequential([\n",
    "        LSTM(80, return_sequences=True),\n",
    "        Dropout(0.2),\n",
    "        LSTM(100),\n",
    "        Dropout(0.2),\n",
    "        Dense(1)\n",
    "    ])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 2066 samples, validate on 240 samples\n",
      "Epoch 1/50\n",
      "2066/2066 [==============================] - 10s 5ms/sample - loss: 0.0154 - val_loss: 0.0402\n",
      "Epoch 2/50\n",
      "2066/2066 [==============================] - 5s 3ms/sample - loss: 0.0016 - val_loss: 0.0164\n",
      "Epoch 3/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 0.0011 - val_loss: 0.0162\n",
      "Epoch 4/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 0.0011 - val_loss: 0.0175\n",
      "Epoch 5/50\n",
      "2066/2066 [==============================] - 4s 2ms/sample - loss: 9.3905e-04 - val_loss: 0.0086\n",
      "Epoch 6/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 0.0011 - val_loss: 0.0115\n",
      "Epoch 7/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 0.0011 - val_loss: 0.0052\n",
      "Epoch 8/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 9.7662e-04 - val_loss: 0.0096\n",
      "Epoch 9/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 0.0011 - val_loss: 0.0087\n",
      "Epoch 10/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 9.4749e-04 - val_loss: 0.0156\n",
      "Epoch 11/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 9.2714e-04 - val_loss: 0.0050\n",
      "Epoch 12/50\n",
      "2066/2066 [==============================] - 5s 3ms/sample - loss: 9.1858e-04 - val_loss: 0.0195\n",
      "Epoch 13/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 9.6286e-04 - val_loss: 0.0150\n",
      "Epoch 14/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 8.8028e-04 - val_loss: 0.0072\n",
      "Epoch 15/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 9.7157e-04 - val_loss: 0.0065\n",
      "Epoch 16/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 8.9613e-04 - val_loss: 0.0061\n",
      "Epoch 17/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 8.6423e-04 - val_loss: 0.0055\n",
      "Epoch 18/50\n",
      "2066/2066 [==============================] - 5s 2ms/sample - loss: 8.4587e-04 - val_loss: 0.0063\n",
      "Epoch 19/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.6495e-04 - val_loss: 0.0059\n",
      "Epoch 20/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.5322e-04 - val_loss: 0.0233\n",
      "Epoch 21/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 0.0010 - val_loss: 0.0105\n",
      "Epoch 22/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.3407e-04 - val_loss: 0.0063\n",
      "Epoch 23/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.0863e-04 - val_loss: 0.0116\n",
      "Epoch 24/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 8.1972e-04 - val_loss: 0.0138\n",
      "Epoch 25/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 8.7046e-04 - val_loss: 0.0033\n",
      "Epoch 26/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.3824e-04 - val_loss: 0.0026\n",
      "Epoch 27/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 7.9341e-04 - val_loss: 0.0034\n",
      "Epoch 28/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.0621e-04 - val_loss: 0.0109\n",
      "Epoch 29/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.8115e-04 - val_loss: 0.0046\n",
      "Epoch 30/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.6723e-04 - val_loss: 0.0026\n",
      "Epoch 31/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 7.9496e-04 - val_loss: 0.0156\n",
      "Epoch 32/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 7.3368e-04 - val_loss: 0.0057\n",
      "Epoch 33/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 7.3043e-04 - val_loss: 0.0072-0\n",
      "Epoch 34/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 9.4659e-04 - val_loss: 0.0175\n",
      "Epoch 35/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 6.9710e-04 - val_loss: 0.0140os\n",
      "Epoch 36/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 7.2817e-04 - val_loss: 0.0071\n",
      "Epoch 37/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 7.6714e-04 - val_loss: 0.0108-\n",
      "Epoch 38/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 7.6667e-04 - val_loss: 0.0037\n",
      "Epoch 39/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 6.9306e-04 - val_loss: 0.0083\n",
      "Epoch 40/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 8.3559e-04 - val_loss: 0.0063\n",
      "Epoch 41/50\n",
      "2066/2066 [==============================] - 6s 3ms/sample - loss: 6.3122e-04 - val_loss: 0.0090\n",
      "Epoch 42/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 6.4923e-04 - val_loss: 0.0061\n",
      "Epoch 43/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 6.7444e-04 - val_loss: 0.0119\n",
      "Epoch 44/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 8.0494e-04 - val_loss: 0.0020\n",
      "Epoch 45/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 6.7373e-04 - val_loss: 0.0041\n",
      "Epoch 46/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 5.9980e-04 - val_loss: 0.0087\n",
      "Epoch 47/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 6.0669e-04 - val_loss: 0.0059\n",
      "Epoch 48/50\n",
      "2066/2066 [==============================] - 7s 3ms/sample - loss: 6.8517e-04 - val_loss: 0.0047\n",
      "Epoch 49/50\n",
      "2066/2066 [==============================] - 7s 4ms/sample - loss: 6.4206e-04 - val_loss: 0.0040\n",
      "Epoch 50/50\n",
      "2066/2066 [==============================] - 8s 4ms/sample - loss: 6.2289e-04 - val_loss: 0.0205\n",
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "lstm (LSTM)                  multiple                  26240     \n",
      "_________________________________________________________________\n",
      "dropout (Dropout)            multiple                  0         \n",
      "_________________________________________________________________\n",
      "lstm_1 (LSTM)                multiple                  72400     \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          multiple                  0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                multiple                  101       \n",
      "=================================================================\n",
      "Total params: 98,741\n",
      "Trainable params: 98,741\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEWCAYAAABBvWFzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydd3RU1drGn5fQe+9I7x2CggiCiCAiWO8FC2AB9VquDa/6qVjvtVfADigiWCmCIkVAqhCkBIIYQpEQei8hIWR/fzxnO5PJlDN9Jtm/tWadzGmzZzJznvPWLUopGAwGg8EQLEWiPQCDwWAwFAyMoBgMBoMhJBhBMRgMBkNIMIJiMBgMhpBgBMVgMBgMIcEIisFgMBhCghEUQ9whIqdEpFGUx7BYRO4M07mj/v78QUQmiciL1t89RGRrgOf5QESeDu3oDJHECIrBIyKyU0SyRaSqy/r1IqJEpEGQ5z/l9MgVkUyn5zd7Ok4pVVYptd3DOVuLyDwROSoix0RkrYgMsLb1EpH0YMYcCNbnqN/bfhGZKCJlPe3v7f1FagyBopRaqpRqbmM8I0RkmcuxdyulXgj1mAyRwwiKwRc7AAzVT0SkLYBSoTixdeEsq5QqC+AvAFc7rZsS4Gl/ADAfQA0A1QE8AOBEKMYbJFdb77MTgC4AnnLdQUSKFoIxGAowRlAMvpgMYJjT8+EAPnfeQUSuEpF1InJCRHaLyLMu2weJyGbLYlgsIi29vaCIXCgiK63994rIWBEp7rRdiUgTN8dVBdAQwMdKqWzrsVwptUxEygD4CUBtJyuotoiUEJG3RSTDerwtIiWczjnYsshOiEiaiPR387q1RGSjiDzq7X0BgFJqjzWONk7v5V4RSQWQ6vr+RKSUiLwhIrtE5LiILBORUta2riKywvqcNohIL1+v78cYBlrv+5j1Gu2c3m9HEfldRE6KyFcASjpty2MFikg9EfleRA6KyGHrf9kSwAcAuln/h2PWvn+7zqznI0Vkm4gcEZFZIlLbaZsSkbtFJNWyRseJiNh5/4YwopQyD/Nw+wCwE8DlALYCaAkgAcBuAPUBKAANrP16AWgL3qC0A7AfwDXWtmYATgPoC6AYgMcAbANQ3N1rWX93BtAVQFEADQBsAfCg074KQBM34xXwgjgbwDUAarhs7wUg3WXd8wBWgdZMNQArALxgbbsQwHFr7EUA1AHQwtq2GMCd1vj+BDDK1+do/V0PwGan11CgRVUZQCnX9wdgnPVadazP/2IAJaznhwEMsMbW13peLdgxgBbMAQAXWa853Dq+BIDiAHYBeMj6f94A4ByAF10/Y+vYDQDeAlAGFJ5LrG0jACxzGeMkp/NcBuCQNZYSAN4D8KvLd2A2gIoALgBwEED/aP9mCvsj6gMwj9h9wCEoTwH4H4D+1oWnKJwExc1xbwN4y/r7aQBfO20rAmAPgF7uXsvD+R4EMN3puVtBsbbVBTAWQBqAXAC/Amhqbfv7Yue0fxqAAU7P+wHYaf39oX4fbl5nMYA3rXEPtfE5ngJwzLoYj0de8bjMZX8FoIn1WWUCaO/mnP8BMNll3c8Ahgc7BgDvwxIbp3VbAVwKoCeADADitG0F3AtKN+tCX9TNeEbAu6B8CuBVp21lQeFq4DTmS5y2fw3g8Wj/Zgr7w/hLDXaYDF6YG8LF3QUAInIRgJdBF0px8I7yG2tzbfACBgBQSuWKyG7wDtstItIMvFgnAigNCthaOwNVSqUDuM86Tz0AH1lj7ubhkDzjs/7WrpV6AH708nI3g9bWtzaGdo1SaoGHbbs9rK8K3tWnudlWH8CNInK107piABaFYAz1AQwXkfud1hUHPxcFYI+yruIWzp+fM/UA7FJK5XgZkydqA/hdP1FKnRKRw+D3Zqe1ep/T/mdA0TFEERNDMfhEKbULDM4PAPC9m12+BDALQD2lVAXQP6792RngBQoAYPm564FWiifeB/AHaFmUB/Ck0/n8Gfdu0GXURq9ys1ue8YHukwzr790AGnt5iWdBt8yXIpLg7/ich+ph/SEAZz2MYTdooVR0epRRSr0cgjHsBvCSy7lLK6WmAtgLoI5LvOICD+fcDeACD4F+X23OXb83ZQBUgffvjSHKGEEx2OUO0C1y2s22cgCOKKXOisiFAG5y2vY1gKtEpI+IFAPwCIAs0E3iiXJgZtYpEWkB4B47AxSRSiLynIg0EZEiVpD+djBGAjC2U0VEKjgdNhXAUyJSzdr/GQBfWNs+BXCbNfYiIlLHGo/mHIAbwfjAZBEJ6e9JKZULYAKAN60EggQR6WYlDXwB4GoR6WetL2kFxOuG4KU/BnC3iFwkpIww8aIcgJUAcgA8ICJFReQ6MNbkjtWgAL1snaOkiHS3tu0HUFecki1c+BL87DtY7/e/AH5TSu0MwfszhAkjKAZbKKXSlFJJHjb/C8DzInISvCB/7XTcVgC3gEHVQwCuBtNXs7283KOgKJ0EL25f2RxmNhgkXwAK0iZQvEZYY/kDFJDtVvZSbQAvAkgCsBFAMuhmedHafzWA28Cg8nEAS5DXmoH1Pq4Dg/oTQi0q4GeRDGANgCMAXgFQxLK+BoPW20HQGhiNEPymrf/zSDAWdRR0642wtun3O8La9k+4t1qhlDoP/r+bgGnh6db+APALmBiwT0QOuTl2IRh/+w4UpcYAhgT73gzhRfK6Qg0Gg8FgCAxjoRgMBoMhJBhBMRgMBkNIMIJiMBgMhpBgBMVgMBgMIaHAFjZWrVpVNWjQINrDMBgMhrhi7dq1h5RS1QI5tsAKSoMGDZCU5CnL1WAwGAzuEBFPnQ98YlxeBoPBYAgJRlAMBoPBEBKMoBgMBoMhJBhBMRgMBkNIMIJiMBgMhpBgBMVgMBgMIcEIisFgMBhCghEUg8FgKAisXQss8DQhZ2QwgmIwGAwFgUceAfr2BUaOBE67mwcv/BhBMRgMhoLA4cNA1arAzz8DZ89GZQhGUAwGg6EgcOwYcPXVQEoKUKVKVIZgBMVgMBgKAseOARUrAmXLRm0IRlAMBoMh3snJAU6doqBEESMoBoPBEO8cO8ZlpUpRHYYRFIPBYIh3tKAYC8VgMBgMQWEExWAw+M2ePUB6uuP5b78Bd94JPPlk9MZkiD4xIigFdsZGg6HA8ccfwCWXAKVKMTX0xReBV18FRLj9vvuA2rWjO0ZDdIgRQTEWisEQD+TmAlddxWV6OtC+PcXkrruANWsApYCvv472KA3R4uhRLo2gGAwGn2RkANu30yq54QZgxw7g+eeBDz4AOncGOnQApk6N9igN0cJYKAaDwTbbtnHZrBnwySdsr/HUU47tQ4YAq1cDe/dGZ3yGyJOdDfz+O7B1KwUlISGqRY2AERSDIT5IS+OycWOgQgXgiiscsRMAaNWKyz17Ij82Q3R48klapy1aAEuW0Dpx/k5EASMoBkM8sG0bUKwYUK+e++1Vq3J58GDkxmSILnPn0mIFgJUro+7uAoygGAzxQVoa0KABUNRDYqYWlEOHIjYkQxQ5cADYvBkYMQIoX57JGkZQDAaDLbZtA5o08by9WjUujYVSOFiyhMvevZnxBxhBMRgMNlCKFkrjxp73qVCBQVljoRQOFi9mAL5zZyMoBoPBDw4dAk6c8G6hiNDtZQSlcLB0KYtcixUzgmIwGPxg3TouvVkoAN1exuVV8Dl3jl0TOnTg88IgKCIyQUQOiMgmp3WvicgfIrJRRKaLSEWnbU+IyDYR2Soi/ZzWdxaRZGvbuyJRzoszGMLN6dPAddcB8+bR1TV8OFuqXHyx9+OMhVI4SEujqOhU8TZtKCa+bjgiQDgtlEkA+rusmw+gjVKqHYA/ATwBACLSCsAQAK2tY8aLSIJ1zPsARgFoaj1cz2kwFCzmzAGmTwduvJFujexsYP58oHJl78cZQSkcpKRw2bIll6VKUWRGjozemCzCJihKqV8BHHFZN08plWM9XQWgrvX3YADTlFJZSqkdALYBuFBEagEor5RaqZRSAD4HcE24xmwwRI1t24Aj1s/l228pDsWLM0146VLH3ag3jMurcLBlC5ctWjjWVa7sOaU8gkQzhnI7gJ+sv+sA2O20Ld1aV8f623W9W0RklIgkiUjSQfPDMsQLWVlAly5Ax44sUPvxR1onycl82BETgCJ05Ahw/nx4x2uILikpQP36UW+z4o6oCIqI/B+AHABT9Co3uykv692ilPpIKZWolEqspvPyDYZY5NNPgQkT+PfixezFdOAA4ySnTwPXXw/UrOlfoLVqVaYY686zSgG7doV86IYok5LicHfFGBG3kURkOICBAPpYbiyAlodzT4m6ADKs9XXdrDcY4peDB4H772eg/fbbgR9+AEqXpjUyfz5w6hQL1vzFubixeHFWUU+fDmzYALRrF9K3YIgSmZnM8LrssmiPxC0RtVBEpD+A/wAYpJQ647RpFoAhIlJCRBqCwffVSqm9AE6KSFcru2sYgJmRHLPBEHLGjeOFIS0NOHmSgnL55UCjRpzf5JFHgCIB/DSd26889BDFBABSU0M3dkP0WL8eqFULOHsW6N492qNxSzjThqcCWAmguYiki8gdAMYCKAdgvoisF5EPAEAptRnA1wBSAMwFcK9SSjuC7wHwCRioT4Mj7mIwxB/Z2cDYsQ5rYsoU4K+/gKuvDv7cWlA2bgQmTwb+8Q8+37cv+HMbos/33/MGZP58ppXHIOLwOhUsEhMTVVJSUrSHYSionDlDN5W/zJsH9OsHjB8P/OtfDK7u2sUJtGrVCm5Me/fSjVaxIivr//iDvvYnngBeeCG4cxuiz3XXMX7yxx9hfRkRWauUSgzkWFMpbzD4y6pV7J3122/+HztjBlCmDOMblSpRTBITgxcTgOf4+GPWJdx6K9C0KVC9urFQCgqbNrGIMYYxgmIw+EtKCpCTA/zvf/4dl5sLzJwJ9O/Pi75unREKd5fmzjs5ydbEiXxes2bkZ3EcPRpYvjyyr1nQOXOGtUpt20Z7JF4xgmIwaI4dYx2IL/Qd/8yZjiIzO/z+O11b11i1uboHUygFBWCjSN2hqGbNyFoo6enA6687EgIMoWHLFqaBGwvFYIgTxo5lHcjatd7327uXFkbRosDnn3Pdb78BF11Et8Qff7i/Q9cusl69uBw5EhgzxmGphINIC4p+jydPRu41CwPJyVzGuKBEv1bfYIgVduzgcvRoYOFCz/Nz79sHXHAB4yjLlwNbtwIDBrBK/a23gDVraIns3885SjQbNrBFRh2r2UOrVsCzz4b1LaFmTY4jN9dzKrJSoZuLfNUqLo2ghJZNm4ASJbxPYRADGAvFYNCkp/PCumgRsGyZ5/327WMAvHt3isdzz7H764ABwKRJvJs8fDi/pbNhA91ckWyYXbMm4z1HjrjfvmQJhdGbFbNjB/DqqxQeXxgLJTysWcPiVOcblBjECIrBoNm9G+jblz/an3/2vN++fbxQd+/OIrNp09gq5amnaAlUq0bRmDfPccz58xQaHTeJFDVrOsbsjuRkXvxXr/Z8jsmTgf/8h3fJ3jh3DtCp+kZQQkdmJi2/Sy+N9kh8YgTFYNCkp7NuIzGRVoonnAUF4J37kCFA167A0KEMSnfqlFeUUlN5YYg1QdGWy8aNns+x2+rbunix99fatInvsUgRto8xhIaVK1kQG0g7nghjBMVgAIDjx3lXXa8ef7irV7u/KJ46xUfNmnw0bkyLpE8fWiVffgkMG8bU4JUr2V4FoLsLiG1BefRRxoBc0YLiTWQBR8Zbq1bGQgklixbRar7kkmiPxCdGUAwGgNYJANStS0HJyXFkah05wgr0X35hgBtwXKjfeAP48MP8c1HcfjtjE/36sVnjhg3cx24r+lChx+mpFkULyvLlwNtvA++/n3+fv/7icskSuvQ8ocWzfXsjKMEyYwYt3qwsWoadOwPly0d7VD4xgmIwAI678Lp16coqVgy4917gm2+AFSt4Qd6wwXGnry/UgwcD116b/3yNGgGzZ/MiO2ECLZ527ZipE0nKleN7OXzY/XYtKBkZjPOkpjpEc9IkFtPt3s2K+yNHgI8+olvLHWlpzGCrVq1gCcovvwC//hqZ1zp/ni7U779ngsNnn9HS7ds3Mq8fJEZQDAbAYaHUq8fWKN98wxbwd96Z11JxFRRvdOsGNG/OO/vVq1mnEmlEaCkdP+5++5EjjqwzLXYrVrAX2G23MdHg1ClaXPXrA/fcwwC9O9LS6AIsV47HeLNm4onRo4Ennwz/62RnU5A//tiRIfjQQxSZ4cPD//ohwAiKwQDwLlzE0VNr8GDg+ed5Yf30U67zV1AAoEcPBudPnqQLIxp4E5TDh5lAAAB3301RWb7cEQ+ZM4fLjh0pGB06sO7GHc6CAnCisIJAejotuHCzezetwwkTWBxbrBhbrlx6KfuyxQFGUAyFm+xsZmhNm0YxKVbMsa1PH2Ys6emktaAUKeJoFe+LHj0cd+qxKChHjnD64S+/ZNV+YiIFJSWF23ViQr16DAw3bux+FsjTp+kWdBaUguD2ys7mTJoZGY46nKys8EyzrD/X337jd+aBB/h81KjQv1aYMIJiKNxMnQp89RXw55+MnzhTqVJeN9WRI7xoVq9uv8CsRw/HuaJ1l+lJUHJz+Z6qVGG6c6VKHO/atfnrUupZE6rWr88gvWuR4/btXBY0QdEWaVYWe70BbH/yyiuhfy1XoX7oIWbfDR0a+tcKE0ZQDIWX3FzgtdfYwXXyZOC//82/T79+XNap47BQ7Lq7AKBBA7Zp6d49shXyzngSlJMn+RlUruxY17cvCxS/+AKoUYPrEhIcrsALLmBQfs4ctgHRAXyd4VXQBGXPHsffe/cy+2/bNrbmCTW7dvE7UqoUP/vatfndjNb3JgBMLy9D4WX8eGDzZorJLbe43+eBB3h3/ssvzLZRyj9BEQF++slxkY0GngRFZ3g5C0r37pw47NQpYOBAJhQUK+awyOrX53L8eIrInDkM2GtBadLE4SYraIKSkeEQ2XXrQtsDDaCg1KrFbtQJCXElJBpjoRgKJ3PmUCwGDmQMxROVKvGCWaVKYBYKwNoT7TKKBv4ISokSjorsVq2YEt2zp2O7FhR9h667AaSm8jyVKhUsC8U5GL93L3D0KP8+etR9LCkY/vqLn++4ccC774b23BHCCIqhYHHuHLB+vaMy3RPTp/MC+PXX+YsS3VG5Mn3o+/f7LyjRpkIFh3vLGS0oVarkXa/dfC1b8uI2ebJj2wUXcJmdzeX8+QxQb93KFGnAISgFof3Knj0O6ywjwxFHATi/TSjZtcsh2HGKERRDweLGG5ni2qVL3h+/K7r6vVQpe+fVd/E5OfEpKErltxh0saOzhQIwCHzbbcDll+c/V+XKrNMBOHfM0aPshPvHH0CLFlxfkCyUPXtoXZYtm9dCAej2ChW5uUwbNoJiMEQJpXiBT00FfvyRz3/9lXfK587R/++JI0fyX0i94bxvPAoKkN/t5c7lBTAlesIEoGLF/OcScVgpjz/O5999R1egq4VSEAQlI4M3HrVq5RWUkiVDa6Hs20erzwiKwRAlrriCAeNmzYCrrmJ1+9GjzNsvVYqBdE8EIyg64ylecBaUtDSOf/Vqh6BUquTf+erXZy3OZZexncykSVyvLRRtwRQEQdmzhxl+tWtTXLSgdOrkSEQIBToeYwTFYIgCmZnswtq3r6ND7nvvcdmlCzuzekvtLEwWirY0jh8HPviAd8MLFvAzKFeOLWb8YcAA4B//oHD07g0cOsT12kIpUoTbCoKgZGRQULSFot2oDRqwi0Ko0NlkrrVQcYYRFEN8snkzg8GjRgEPPsgAsp5lsW1bVrlv3uyok3DlyBH/7szjWVC0hXLgAJsNAkxc2Ls3f0DeDvffz4JQAOjVi8uiRVmDoilXLv4FZf9+JhbUq5fXQilWjN+BUL4/LcrVqoXunFHACIohPnGdX0TPFVGvHu/I9YXO3VS+mZl8BGKhlCoV3ZqSQNCC8sUXbCNTvTo/v2XLaM0FQ8+ejKM0apS3bU1BEJSlS7m8+GJaDpmZdHNVqsRW8qdOha4FixaUQAQ+hjCCYohPNmygW0XfFesWJ+3aOZZFirhPH9Z+cH8EpWJFXjhr1oy/gjMtKHPn8jO76y62mklPD34WQN2uxbWTckEQlCVL+Hl17kwXF0DLTgsKELrU6EOHeE5/3Y8xhs8EfBEpDeARABcopUaKSFMAzZVSs8M+OoPBExs2OEQDcFgoWlBKlaJP352geMpu8kZCAkUl3txdgENQMjN5t925s2NbKKaVnTs3f2+zgiIoF19My0sLyrZtFE8tKCdOOD7fYDh4MO7dXYA9C2UigCwA3azn6QBeDNuIDAZfKEWh6NDBsa5hQ8YH7rvPsa59+9AJCkBXUZ06/o832pQs6XBHdejgcBPWrOkIpAdDqVL576xr1gR27szfRDJeOHwYSE5m63iA3y+Ns4USqsD8oUP2O1jHMHYEpbFS6lUA5wBAKZUJIM5sfkOBYvduZixpa0QzbBiDp5r27ZmO6VrgGKigTJ4M/O9//o832uhJtgAKSv369NX36RM+913Pnvw/7djhfb8lS5hUEWusWsWldqVWrOj4DI2geMSOoGSLSCkACgBEpDFosRgM0SE1lUtfd9f6TnzjxrzrAxWULl3Y/DAecRYUEdbovPlm+F5PJ0UsXux9v3HjgHfeYQZaLPHXX1w6Tzmg3V7O/cqMoOTBjqCMATAXQD0RmQJgIYDHwjoqg8Eb27Zx6evirgXF1e0VqKDEMxUqMN7Upg2ft2tHF164aNmSnXkXLfK8j1KOTKoNGzhLZKzEXTIyGBdy/oy0oFSsGHoLpbDEUJRS8wFcB2AEgKkAEpVSi8M7LIPBhTlzHHeNaWnsiusrnlGrFu8ktQBpjhxh3UTZsuEZayxSuTIr2e32LgsWEVopixd7jqOkpTkmsFq+nMkCkZi73Q579jAO5JxsoOMooXR5rVpFMc3MLBwWiohcCyBHKTXHyuzKEZFrwj80g8Fi/ny2mR89ms+3bWPdQxEfX18dO3D90esq+XhL/w2G114DJk6M7Gt27crUZN2E0hVdI1SsGPD++7yofv99/q7I0UD38HLG2eUVKkEZPhy46Sb+XRgEBcAYpdTfXeWUUsdAN5jBEH6OH2fnWwD44Qfm/ael2Y9llC+f343ib9uVgkCHDsCFF0b2NXWRnqeuz0uX8uLcp48jhpKRASQlRV9UfAlKqBpg7tsHpKTw78Lg8vKwj5np0RAZpk2j++Hll3kHO2MGBcW5zYc33NVDFEZBiQaeuhwDvIh+9RVb5Ov070suoYtp0CDGX06fDv2Ypk9nU8ssH3lFuimkM926MeurSxeOs0yZ4CyUrKy8xxcSCyVJRN4UkcYi0khE3gKwNtwDMxgAUFCaN6e7q149ZiadPu2fheLJ5WUIL7oppauFcu4ccN11jGG99ZYjeeKmm9jsc/9+Zj3t3h36MX33HRMFvvjC8z5nzzrmy3GmenVOj6Bn33T33fIHV1dgIRGU+wFkA/gKwDcAzgK4N5yDMhgA8C5xyRJO+FSkCJsS6kmNArVQlHLM3W0IL54slJQUzvD4yiu0Avr3B0aOBP75TzadnDKF+3lq7BkM69dz+dprnt1qe/dy6SoorpQrF5yg6P5dmsIgKEqp00qpx5VSiUqpzkqpJ5RSPm1REZkgIgdEZJPTuhtFZLOI5IpIosv+T4jINhHZKiL9nNZ3FpFka9u7IoUpklrImT6dAjB0KJ8//DBbYQD2LRRXQdm9m3efzlX2BYCVK/nxjB3LG+yYwJOFotO4dUynYkXgo49oNVasyG7RQOgFJTOTM0u2bElBc9c4FHC0kvclKOXLUyy/+iqwnl4HD3JZqpSjtU+c41FQRORta/mDiMxyfdg49yQA/V3WbQJTkH91ea1WAIYAaG0dM15EdL7e+wBGAWhqPVzPaSiopKbyR9usGZ8nJHAO+Pfes2+huLoltIXTsWNoxxolzpwB7riDOvveezTinn8+2qOy8GShbNjAdjDORYPO1KjBZagFZdMmdgceMYLPPVXxZ2Rw6SstvXx5KvmQIcC33/o/Hm2hDBvG2IyvrMU4wNs7mGwtXwfwhpuHV5RSvwI44rJui1Jqq5vdBwOYppTKUkrtALANwIUiUgtAeaXUSqWUAvA5AJOyXFg4cMBxcdHUqcN+XXYNVW2h6FqIdet4rGvbljjk0CHGsSdO5Gy8R48yu3riRM6MHHV0JpQ7QWnThrVA7qhShRfXUAuKdnddeSWX2rXlihYUuxYKkHeuebtoQXn+ee8FoH5w/nx026d5FBSl1FrLShiplFri+gjxOOoAcI7ApVvr6lh/u653i4iMEpEkEUk6qM1JQ/xy4EDw1dzlyvFXlpnJ5+vWMcivp6mNU44eZbLSli3A7NlsMVa2LEMR+/YBP/4Y7RGCFmX58nldXkrxwu7N5ZiQwBTaQATlzBmmmbubnnf9eo6ndWtaT1o4XNmzh4WzviZg07UogPtMNl8cPMibmxAmiHz2GetXwxF+soNXG0spdR5ANREJd5N+d7ebyst6tyilPrJiPYnVCkBOd6EnFIKif/Q6jrJuXdy7u3JzgVtuYThg9mzOyKsZMID5BhMmRG98eahQIe/FNiOD2U06s8sTNWoEdlWcM4dz3L/9dv5tv//O1y1SxDEDozsOHaKg+bKCnQUlkOD8oUMULU+WWgBMnkzNDmdXHW/YcdrtBLBcRJ4WkYf1I8TjSAdQz+l5XQAZ1vq6btYbCgOhslAACopORY1zQXn3XVogb7/NmkBnihalS/+nnzzXE0aUihXzDkTHsMIlKDNncjltGtOTNZmZwNq1jqSOWrU8C8rx4/bmOAnWQglxQ8hdu9jp5tZbo9cEwo6gZACYbe1bzukRSmYBGCIiJUSkIRh8X62U2gvgpIh0tbK7hgGYGeLXNsQi58/zBxcqC+XECUdWT9euwZ0zihw9Spf7FVcA99zjfp8hQ4DsbNaARh1XC2XuXGY1OU/y5Y5ABOXcOVoo9evzuzNvHtefPw+sXs3teiK22rU9x1DsCorzVNCBWCgHD4ZUUHRpzS23hOyUfuPV1hKRjgA2A9islNriz4lFZCqAXgCqikg62K7lCHZOSq0AACAASURBVID3AFQDMEdE1iul+imlNovI1wBSAOQAuNdytwHAPWDGWCkAP1kPQ0Hn8GH6dlyD8v7ibKEsWsSLWaRbkISQ//2PN/yvvur5LrRLF/Yx/OorR0JT1KhQwXHhVooWRL9+QOnS3o/TgqKU/dvtZcv44Xz4IdV2yhTGQgYPZiBeBOjenftql5e78584Ya8Nim4tU62abwvlzJn87/nQobwTdwXBu+8Czz5LizVEpwwIb2nDz4DFjNeDF/+R/pxYKTVUKVVLKVVMKVVXKfWpUmq69XcJpVQNpVQ/p/1fUko1Vko1V0r95LQ+SSnVxtp2n5XtZSjo6N5OoXR5LVrEC0qJEsGdM0qkpNDNNXy4d4+RCEt35s3jpIlRxdnl9fvvbBY5eLDv42rUYEGNP72y1qzhsl8/FknOmEHlPXOGFfJt2jgC7bVr04w7ciT/eexaKEOH0vfYqZN3CyUtjedbuTLv+hC5vDZvBv79b9aHfvNN0KcLCm8ur38C6KCUGgqgC1gLYjBEhlAJinZ5bd/OKV1DMYd6FNi+nfUmZcvyGumLe+5hstRbb4V/bF5xdnnNmMGA+MCBvo8LpBZlzx7+vytUoN8nM5OdquvX53Y9+yLg6JTgLo5iV1DKlqXl45w+7I60NOZxL1nCTgCvvkrLKESCMnYs75EmTvSdmBZuvAnKWaXUGQBQSh32sa/BEFpCbaHoPNo4E5TNmxlkbdaMN/jjxtnzxtSty9ZYn3ziKMiOCtpCyc0FvvySc6TYuYgGKii6GLFbN4fv59tvqbB33unYV9eYeBIU54C7L1zjRK5oC239erabefttWl7Z2UELyrFjwOef838dC51bvMVQGjtVxIvLcyilBoV1ZIbCTagFZdky3h136hTc+SLEmTPA3XczDbR0abo0HnnEd62dM//5D2+I77iDoYuoZP5UqMCg+IIFNLPG2Jz5omZNLj0Fzt2Rnk4lBfhmn3ySbs7ERD6c0R+k6/mzsviwY6FofDWJ1IKydKnj9dKt8rogv9/TpvG7cm+MdFf0Jiiujs7XwzkQgyEP+/czBzZYG75MGV5cTp/mbX4cxE/WrePN9Lp1rIB/9FFH/NcfWrbkDfFDD9EdcvvtoR+rT/SF+d13qYzXXWfvuGbNgOLFmZ114432jtmzh29ac+edea0SZzy5vLQw+CMoFSrw+5WT476mRAuK82stX86lnmMlQKZMAVq1ip37JG+V8vmq48NYKW8w5OXAAfp2gu1vVKSIY6pf54tNDKIUBaBzZ852PGsWs7oCERPNv//Nspt33olSSw7d8HDOHOD66+1Pu1yqFNO7Fy3inf0nn3jf//x53v376r/lfP5q1Wg17dxJyyknx+G68tdCATwnELgrCFq6lMsgUrJ27aLhfdNNsTP5qImLGGKTUBQ1arTbq1Wr0JwvTPzf/9Ei+ec/2RfTTuzaFyJsx7JxIydCjDjOF+a77/bv2N69aab17Mk34Y39+ykqdet638+ZNm3YMHLiRBb3TJ0amKB4m0gMoKDouel1m5WlSzn1sT8+TBe+/JJLPYNwLGAExRB7bNnCW68LLgjN+fQdZAwLyqRJtEZGjaIbI5SdzG+6iTfkvm7yw4LzhblbN/+O7dXL/lTAuuW8XQsFoKBs3uxQ2pdecjR5DMRC8RRHOXaMlkizZg5h3LmT328tNH6Sm8v2Oj16RLfuxBWfgiIiDdys6xKOwRgMyM5mHUHx4sDrIQrbaQslRl1eH3zAwHmfPkwBDXUX8woV2ONr/vzQntcWOlYxZoz/fpmuXR0xr2LF8m/fvZv7pKU5gtz+CsqpU8DChbQUtm5llBsIrYVy9ChjgVu28K5BC1AQSrBoEbBtG3DXXQGfIizY+ep+LyJ//5dE5FIAsdJ6zlDQSEnhheKNNxzzoASL/gG3aBGa84WI3FzgsceY0XrllSzTcHfdDAWdO3P6j4j392rQgAEhu9ldzpQsSbXt3ZttU1yDQN9/D/z2G00vbaH44/LSE3llZTnSpH61pmryJ23YjoVSsSLvFEQcUwgHEZD/8EN6z66/PuBThAU7gnIXgBkiUlNEBgB4B8AAH8cYDIGhZ/MLZdpK5cpAo0Yx17L+1Vc5E+2//kUxsRuvDgTdD1NPCRJR6tULPGo8YgRw+eX8Ozs777aFC7mcNo03IcWK+VeM0bq14+8ePZiqnJrK56GOoTj7MLXoBWihpKay8P+OO6i5sYTPvslKqTUi8gCAeeB88n2VUmayEUN4WL+eDn9Ps/kFwksvBdYNNkDS01lHuXEjXU39++d3Y504QUEZOJBurnBn6WhBWbeOoYm4Ql81z551uMB05XmNGoxHfPMN3Vb++AvLl2cV/V9/8QNq0oSTyeht/pwH8G2haLSFEqCgvPgiP4ZHHgno8LDiUVBE5AfknXukNIDjAD4VEVPYaAgts2czN1/P5hdgsNItoRQnL+zcyTIL3aG9eHFWtvfqxQJFZ2/Mu+/Stf7ss5FJ+axRg+EMPba4wllQtDWQlMQL+JtvAg88wBzahwOYVSMxkRf7smU5rfSyZayX8cf36K+FEoSgpKayq/BDDwXfNzUceLNQTCGjIXK8+SYjjcWKsfthDHDkCF0Lhw5xrnZvLqnVq4Grr6ZX5s03GWBv3pxtMR5+mHkGSUk0vnbtAl5+mT0SfXVxDyUdO7J9S9yhBSUry7FOZxgMHsy04nLlHNX1/vDhh47zNm7MpT/uLoD/1IQE9xbK2bN8OBfoJibSqmne3O/hautk9Gi/D40IHgVFFy9a85PsVUqdtZ6XAhCD2miIW86edXRiPXfO9+RLEeDoUc7FtHUrn3/zDfMEevbMbzzNmMHU3Jo16YVxjv2PHMns0P79KSyvv87UYIDFhpGkUydOR+Kuk3pM42yhaH78kX36q1YNromVc9VooIIi4rmfl17nbKEMGMAvmJ/pfH/+GdvWCWAvKP8NAOdk8PPWOoMhNKxezYuFvl33Nt94hLjlFhZRz53LIu/t2zmH+3335d3v44/p5mrXDli1yn0iWb9+vAh88AFrNefNYzBeN8GNFF27MrPst98CP0dWFo/ftCl04/KJjptoQTl4kIO46qrQvo4WFH/iJ5oKFRw1LM7otDrXwiI/xeT8eUe36Vi1TgB7glJUKfV3eoX1d7jnmDcUJpYs4V3e9Om8QutpWqPE5s28AX7+eYrBgAHMSr3lFhZV6+vGjh10hfXtC/zyi/fC/jfeYGVzt27Azz97nm0xnHTvzo9ZZ8b6Q3Y28NxzjMN07QpcdBHLKiKCq4Uydy5TiMMlKP5aKPrYP/7Iv15/WYKsVH31VYZ3xo2LXesEsCcoB0Xk7wC8iAwGcCh8QzIUOhYvppurXj028wt1ZZ+ffPEF3VrOzRTLlGFWTVYWK9kBPk9IAD791LcLSU96tWABp++NBhUr0pLSbaQ8oRSvjVu2UFQffRS49lomEPTsyfdfujSnGvZU13L0qKNhdNC4CsqcOfQvhrojYpUqjvlU/KVDB96J5OTkXe/JQvGDtWuBZ55hS56bbw74NBHBZ9owgLsBTBGRcdbz3QBuDd+QDIWODRuAG26I9igA0CU0ZQotE1eLo0MHeuXGjuUFdfp04L//9a+WLtr07EkBPHfOcyLTM88w+KspXpwWyvjxDsuqcmUmIXTpQmvONZFu8GD+W6dPp6swKFwFZfNmmkihvvEQAZ5+OqBgOdq3593G1q1561uCFJScHM6HU7Mm8P77sdME0hM+/yNKqTSlVFcALQG0UkpdrJRKC//QDIWCkyc5f3yjRtEeCQDmBuze7flO8Lnn2OnjjjuYrPPoo5EdX7D06MGg/Nq17rd/9hnF5JZb2CsqJYWWRkpKXjdd//5Myjt2jOLrbI0kJ9MKOn/e4S4MCtcsr0OHQtc41JVHH6VS+otOJHGtHNWCEuA0DJ99RkvxvfeiPxujHez08qogIm8CWAxgkYi8ISIB2IQGgxt27OAyyHkhQsW8ebzxvfJK99uvuoodPy68kCnB4WqVEi4uu4xj1i2rnMnOBp56ijGSiROB225j+7MKFdy3QbvkEpYP7dvHLDfdGeWjjxhHX7SIGvDpp0EO2tlCCeHUuSGlRQuacrrTgyYICyUrizcwF11Eiy8esGMzTgBwEsA/rMcJABPDOShDIWLnTi5jpGXq/Pm0PLzdDV59NZOMYrTXpFeqVGE8ZPLkvFm4AAUyPZ2xEnfzRLnjoouYsbZwIVOrd+7kXfUNN9Ad1q8fBcY1tOAXzllex4/zZHbmQY4kxYrR1eVOUEqUCKhHyk8/0Vp+5pnYd3Vp7AhKY6XUGKXUduvxHIDY8E8Y4p8YslCOH2cGc9++0R5JeBk5kkWb33/vWJeTw0a4iYn+Jw3cfTeLJu+6i8cWKcJgvt62Z0+QnY6dLZRDVj5QrFkoADMekpPzrnOtkveDH36gdRhP30c7gpIpIpfoJyLSHUBm+IZkKFTs3MkUqhi4QCxaRL9/tLKwIsVllzFk9dFHjnXTprHW5qmn/L8bTkjg3FTdu7MLwOefO0JiWmBWrQpiwM6CctBqIxgD35cTJ1xSsGvWZDzQmQAFJTeXyWz9+8eXW9VultfnTnGTowBiozeGIf7ZsYPWSYht+uPH6bsvWpRTkutpObwxezY7eHTtGtKhxBxFijA7+8knWX3dpAn7Z7ZtG1g8GmBi1OzZ+adVL12a24LqIeYclI8RCyU9nXG2TZuANWto2aFiRQaizp51jPno0YAEJSmJk1CGYtbOSGLHQjmhlGoPoB2AdkqpjmBMxWAInh07Qh4/Wb+eP/BHHuGc6n36eJ7uW5OTA8ycyR9w8UJQtjtiBC2LTz6h6+uPP2idBJuJ6y720qFDkG3z3bm8ohhDUYo1Ibt2MTwyaZK1QdevOBfnBGihzJnjPTkkVrHz9fkOAJRSJ5RSuvvZt+EbkqFQcOQIE+tDKCgHD7KiuGtXpsb++iur0rduzd8yxZWlS3mtirUJi8JFrVrANdew8vqxx2hFhOu9d+zI4LKrN8g2RYvy6hojMZQffgBWrGAT0GuvZQeErCy47zp87FhA+b46OcS51Vg84K19fQsArQFUEJHrnDaVBxBj07oY4o7x41lEBoQkIL9zJy9cui7i888dpQp33skf/YQJnrvif/cdm8b27x/0UOKGceOASy+l4H72WWhnDHDGeS4WPVeW35QsSUHJzqZZEKXJ0hYupNXbrBmtvHr1GH+aPRu4XlsiQVoox44xOeTxx0M37kjhzUJpDmAggIoArnZ6dAIwMvxDMwTN/v1AZozmTyQl8YrfrVvQUXClmE107hxPO3du3rq3Hj04dXhKiudz/Pgjs2libFLHsFKjBhMRPviAdSThwllQAkYLiq5BiUIe7Zo1FMTcXEd87vLLOa/XpEnIb6EoFZCgxHNyiLf29TMBzBSRbkqplREckyFUdO/O3PiZM6M9kvwkJfEK/sUXQZ9q+nS6tt591/38IhdeyOVvvzmmEXdmxw4+Hnoo6KHEHbVqMd03nFSpwjv5oOMoOigfpfjJd99RRNavd3ixEhLYGuX114F9j1ZFTcBhoWiLyk9BmT+fNzbxmBzi0UIRkZEi0lQptVLIBBE5LiIbRSTEXdkMIefMGfYImTWLrXBjif37WZwQgtmlcnNZiNesGedmd0fTprwAeGrbrqcm79Mn6OEYPNChQ4gslIMHoxY/+eEH9kJzDYkMH06LYsoCqw2wtlACrJJfupRdCOIxOcSby+vfAHZafw8F0B4saHwYQISnBjL4zfbtjr91rCJW0I2kQiAoM2eyluzppz3HAERopaxe7X77L7/wTj0eK9/jhY4dGas5cybAE5QokdflFWG2b6fL1F1adcuWtHznrbSm9NRCEoCgnDnD19FWdbzhTVBylFLnrL8HAvhcKXVYKbUAQCHyNMcpaVb/zq5d2Z01lkhK4lVeO9cDRClWZDdtylbq3rjoItYMnDqV/xy//MJiv3hpbxGPdOxIa9K1kNw2rjGUCPPjj1x6qtNJTATWbUyAKpLgsFACmAtlwwZ+TpGcGjqUeBOUXBGpJSIlAfQBsMBpW6nwDssQNNpC6dqVX/DsbO/7R5JffmGearlyQZ1m1iz6s596ynfvqe7d+UNdvjzv+s2b6YELusW6wSv+BOZPnWJfsBdecGQJo2RJFhMdOxaVGEpSEgvh9RxcrnTsCBw8KMgo1zy/heJH2nBSEpeJiUEMNop4E5RnACSBbq9ZSqnNACAilwLY7uU4QyyQlsasEz23w6EYmRNt9WrO0HjHHUGdJiuLbq4mTexlKHXvzhYWixblXW/iJ5Hhggt4XfUlKF9+ybKkf/yDTRH/Tp0tWZLl6UBULJTkZPcJHRo919fvJbsFFUNZu5bZd7VrBzjQKONRUJRSswHUB9BSKeWcJpwE4J/hHpghSNLS2FBJ383pHkjR5n//45UlyNSi0aP5I3/rLXudccuUoV/aVVB++YV3nZGe372wIeI7ML98OQPcTZtyEs/77mMb/S1bQEH56y/uaKePTgg5f55xDW+C0r493+M66cyi3WHDWO4O+C0oiYnx6371WimvlMpRSh11WXdaKXXK0zGGGGH7dl4pY0lQdMe7YcMCdnfl5AAPPsgJhx580L9eR7178wd74oTjXIsXG+skUlx0EQXFXRucAwdoldSvz3jFpZfSQilThvcgKFGChUZAxCdV37aN4RtvglK2LIVwXU4b+mEnT6a5BdieUljXSsVr/ASw13rFEG+cP8/CikaNHO6BWHB5HT3Ki0IQrVZefhl45x3ggQfYZsUfevfmR7N4MZ9rcTGCEhmuuIIi7molnj8PDB3KG/vvvnPc0Ferxp5Z06cDmUWdbkBq1ozcoOFIJPAmKADjKOtONwcyMhwrS5VyzOfig+XLec91ySW+941VwiYoVt3KARHZ5LSusojMF5FUa1nJadsTIrJNRLaKSD+n9Z1FJNna9q5IvBqDESQ9nRfuWLNQ9DyxAd5hHjnCyZwGDaKo+NvWu3t36utEa3q4b77hOQJuB2Lwi+7daXH8/HPe9V9+Sdfj2LGOmXQ1Q4bwzv3HQ055tCGyUNav53fKF8nJdEG1auV9v3btgF2Z1XESZR0r/XB3LVlC9+3FF9s+JObwVtjYwlp2cvewce5JAFw7Iz0OYKFSqimAhdZziEgrAEPA3mH9AYwXEV1V8D6AUQCaWo9C1G0pQFJTuWzSBKhcmb+GWBKUAOcDf/ttWhQvvBDYy5cowVyAWbPY+2vqVHZzrVw5sPMZ/KN4cVqJzoKiFG8S2rQBbr89/zG9elE/pv3VjSvKlg1Jf5xvv6VrKTGRLfy9kZzMn1IpH7mtrVtzmYJWjqpEPzK8Fi/mLJfx3P7Hm4XysLV8w83jdV8nVkr9CsBV/wcD+Mz6+zMA1zitn6aUylJK7QCwDcCFIlILQHml1EqllALwudMxBk/oX0jz5qz2q1IlNgRl/34uAxAUpXgn278/7wQD5e67ea4bbqBnIpw9rAz56deP+SJ6ptyff+YF+5FH3AeiExJopcza1R6HUCUk7q6VK/l/79SJ8ZxBg+hq8sTatfZKprSgbEZr+q1q1LBtoZw+zV5hvXrZ2j1m8ZblNcpa9nbzCDRrv4ZSaq913r0A9JWlDoDdTvulW+vqWH+7rneLiIwSkSQRSToYCxfQaPHnn7zN0bmHVavGRgwlCJfXn3/yQhToBFCaBg0Y7E1OZqw02PMZ/OOmm3iNfeIJYN8+doJu2NC7sI8cCWSfL4qJuC1oQTl+nK9Vty57Zr39Niv4PU1RnJ7O5DI7bqiGDYGSRXMoKK1bs+p21Chb41q6lPGlSy/1483EILZiKCLSRkT+ISLD9CPE43AXF1Fe1rtFKfWRUipRKZVYLYoT8ESdP/9kcyt9y1etmsNCWbkS2LgxOuM6cIDzWgTgY9IZmFddFfwwnn2WkyMlJXFGQUPkqFwZ+L//A376iS1Ljh5l0N1b36rWrYGe9XfiQ9yF3Or+C0puLt2bTzzBc+3eTWu3YkVaqtWrs5W/O1ZabXHtCEpCAtCi1nEKSqtWFJPh9ia3nTYNKF++EAiKiIwB8J716A3gVQCDAny9/ZYbC9bSumVFOoB6TvvVBZBhra/rZr3BmfPn8z7fupWCotGCkpvLWZQeeCCy49Ps309rKYCJN+bM4cUgVPUiNWvSL26IPPfdx6yu666jy8s1EO+O27tsQhqaYGNR//rSHjvGm5CbbmKspnFjZpnpTr4lSvC6P3u2+7YwK1YwdtKhg73Xa93wtENQbHLmDLPbbrzRMTllvGLHQrkBbL2yTyl1G9gk0l4eXH5mwTEf/XAAM53WDxGREiLSEAy+r7bcYidFpKuV3TXM6RgDQGd02bKOng1ZWYw46wp5gBfxgwe5z969tFCUZeidOpVfkMLFgQMBubtOnKBLIBTWiSH6lCxJC+HTT+2nyLZvwOrzVGnmY08Hx48zVXnhQlogWVnMpOrRI+9+Dz7IMOM99+SPpaxYwUC53YzC1pfXRjrq4Xhb+7m/M2fyZ3jLLbYPiVnsCEqmUioXQI6IlAetika+DhKRqQBWAmguIukicgeAlwH0FZFUAH2t57DaunwNIAXAXAD3KqX0Ve4eAJ+Agfo0AD/58f4KPgsXsupq7Fg+376dvwpXC+XwYfoWAPoZMjJ4XOPGwH//G5mxHjgQUEB+wQJmQRtBKbw0rnMWAJCWXc/Hng4efJCFlN99x6kNPBnGVaqwpmn5cs5cqTl1Cvj9d//SeFu1Y9uGran2KzKmT2fxf8+e9l8nVvGWNjzJ+jNJRCoC+BjAWgC/A/DQCNyBUmqoUqqWUqqYUqquUupTq1txH6VUU2t5xGn/l5RSjZVSzZVSPzmtT1JKtbG23Wdlexk02jL5+mva95ussh9XQcnNZfWuzjpJTmby/4EDXB+Jj3X//oAEZc4cDjue8/MNwVGuQhFUx36knbZn4e7bB0yZQqvDTuLF8OGskxk9mvdeAAP1OTnMTLNLI+tWe8cOe/vn5vJn2Lcvw4vxjre30A4AlFL/UkodU0p9AFoVwy3XlyEWSEpiz4fMTEY5hwzh1bdFC8c+OvCwZw/zMwG6vfRMjqmp3ufHDRUBuLxyc9mKo18/ez27DAWUUqXQGGlIO2yvruP99ykG999v7/RFivCYY8eA557julmzWEbSvbv9YTZowOXOnfb237iRAlZQujV4+4mWFpGOcJNpJSKdlFK/h29YBlscP04xeOklxkFSU/mNdu2VdfXVTFcpXZoVZB98wG/ywoV0Yi9fDnz/vSORPhxkZjLp308LZd063m0OGBCmcRnig3790LjdX/j1oO8ecLm5wEcf8TvTtKn9l2jbltP5TpjATMDZs3kOfzoylCtHF5pdC6Wgdbv2Jih1wCJGT6m7ZgaJaPO7pemdO3u3yxMS8k5Q3bYtBSQzk6kv589zftNwzuwYYJX8nDnMfr7yyjCMyRA/VKqEJtdVwpTnGFz31h5r1SrehARStHr//cCkSewhdugQix79pWFD+xbKggV0JtTxWF0XX3hzeW1TSl0W4sJGQyhZs4ZLf9uTdu1KMbntNrZ47dmTjY2yskI/Rk0QgnLhhVGZU8kQYzRuzFCfr7v/GTNoVQSSxNGpE9CtGy/0vXoFVvjaoIE9C2XnTsZpAhGtWKUAhIEKMbNn003l74RD//kPK/smTGBFWWIi06jWr+ftmes8ud6YP59+hSeeYH+Kt992v9+ePVz6MXPQgQPUTJPdZQAcsyXq2a3doRSzpi67zHbX+Hx88gmzvRYs8N2/yx0NG/Ln5a2dCwC88QZjN9EqCwsH3gTlP/oPESluVcu3ERE/e7wawkJGBrBsGS0MfylZklPoabp04fKFF2i1vPOO/XPNnMkJI15+mYKke8O7omfbq2c/7fOnn3iBMIJiAByFqLr3qTuSk/l1vCaIjn+tWjEMGUD9LQBaKFlZdLt54uBB1uHcckvBcXcB3nt5zQMAEekFIBXAOADjAfwpIgUgYzrO+e47Xm1vvDH4c11wAa0c3d/ks8/spxGvW8fA/q5dbCWrXVuu7N5Na8imNaUUMH480zDtNOYzFHyqVuVj82bP+3zxBbMBb7ghcuNyRU/34y2OMnYsvc6jR0dkSBHDjsvrDQBXKKUuVUr1BNAPwFvhHZbBJzNm0N3VsmXw5xJxWCl16/IWUDcx8sb586zU79iRolSzpueuxunpvBWzmWy/aBGnn3/ssfidDtUQWkSYpLhpk/vt58+zAv/KK6My7fzf6NRhT3GU06cpKIMHh+bnG0vY+XUXU0pt1U+UUn8CMG6vaLNjh/0GQ3bQgjJxItOLJ0zwfcy2bfx1aBOienXvFoof7q7XXqM+2eytZygktG1LQXEXn/jlF4bqot3CpEEDip+nWM9XX3Fir8cei+iwIoIdQUkSkU9FpJf10BXzhmhy+DAT3kPFv/5FEenTh/mWX37pezo7nbbcyWrYV706G2+dPZt/3/R0Wj822L2bTQNHjYr/ZnmG0NK2LXNGdu3Ku/7cObqPateO/pQEpUpRVDzVCi9cyPrebt0iOqyIYEdQ7gGwGcADAP4N9tu6O5yDMvjg3DleuEMpKDVqMCAvwmT8zExGDTXLl+dte5+cTLdb8eKOzqo6JdjV7ZWbS0GxaaHoTjDGOjG40qYNl65ur7feovd17NjAMrNCTatW7gVFKTaovPTSgunK9Sko1iyKbyqlrlNKXauUekspFcaCBYNPtOUQSkFxpl071qaMH0/H9GuvsUVrnz5MXTl3jrdXX3+dtxWrFhRXt9fBgzzGhoWiFDOXe/Z09EUyGDS6mYNzq/n9+5mgePXVwLXXRmdcrrRuzVkkcnLyrt+xg265eJ/3xBN25kNpKiLfikiKiGzXj0gMzuAB3b0uXIICMDl+5072/nrsMfagOHWKfqjUVMZOXn6ZjbY0ngRlzTwNEAAAIABJREFUtzUZpw1BWbWKpx8xIiTvwlDAKF+erenWr3esGzOGXtbXfU5MHjlatQKys/PHUZYs4bIgdBZ2hx2X10QA7wPIASfY+hzA5HAOyuCDSAjK4MF0Ub3zDjO4vv2WBZE//OBoQNSvH3/hGk+C4kcNyqRJzAmIZtqnIbbp149fw4MHmUL88cfsKtzM/lQpYUd7gV3dXr/+yp+tH/NvxRV2BKWUUmohAFFK7VJKPQvTxyu6aJdXAFPp2qZoUQbqAc6XUrIke2wD/AUnJOTtaAw4+qN4EhQfFkpmJqdCveGGvL0tDQZn/v1vxxRAo0fzu/LMM9EeVV50OrBrzYye4KsgtKp3h52G4GdFpAiAVBG5D8AeAP5PamEIHZGwUADgoYcYBdWl6p07M16SnEwxcU3BKluW65yD8jk5zBirUsVnQ66ffmKuwbBhIX4fhgJFq1asNXn+eT5/7bXo1p24o2xZuuacBWX3bsZQClKrFVfsCMqDAEqDWV4vgNaJyb+JJpESlBIlgIEDHc9LlmSK8G+/MX/TFZH8tSivv84iySlTfN6WLVoElClTcP3LhtDxzjvscdqkCTsDxyJt2zLzTPPrr1wW1IA8YENQlFJWS1ucAmAm1ooFDh+mpVC2bORfu1s3CorO33TFVVA++4yd+oYO9XnqxYs5mZE/808YCidNm8aem8uVxER2Mzp5km65JUvYsLJdu2iPLHx4mwJ4lrdHJAdpcEEXNUYjkV3Pw+tNULZuBT78kKnCaWnsP+9jrIcOsbagIN+9GQoXXbowDX7dOj5fsoRt7wJtOhkPeLNQugHYDWAqgN/gfqItQzQIdZW8PwwezBb1nloA16rFVOK776bL7Nw5oHlzn6fV7oBevUI3VIMhmuhpipKSWDn/55/Mui/IeBOUmuAc8kMB3ARgDoCpSikvvT4NYUUptq2PpqAUL840G0889RSd2yNHMhgP2MrnXLKEFc6JiSEap8EQZWrUYKZ8UpIja7GgzzzqrX39eaXUXKXUcABdAWwDsFhE7o/Y6Ax5+eEHR1VXtATFFw0aAHfeSUtF16vYEBQdPylePKyjMxgiSmIiJ4mbO5fiUtC6C7viNe1GREqIyHUAvgBwL4B3AXwfiYEZ3LBpE1uhhLqPVzjo3Jk9vCpX9pnTefgw24SZ+ImhoNGrF5tyz5gB9O9fMPt3OeMtKP8ZgBUAOgF4TinVRSn1glJqT8RGZ8iLc4vVeBAUwJZ1snQplyZ+Yiho3Hsv64Nzcxl+LOh4i6HcCuA0gGYAHhCHtAoApZQq7+lAQ5jYtYsV7Dk5sS8ouqW9TXdXyZKOKVkMhoJCQgIr+h9+GGjcONqjCT8eBUUpVUCbA8Qxu3YxqlevXt6Cw1hER9dtNC1asoTZyCVKhHlMBkMUECkcYgLY6+Vl8IRSdJBG6rV27WJp8LhxfkX39uxhYtbMmQzBRITatYEFC9i1zwsnTjB+csklERqXwWAIG0ZQXHnlFba8tcPHH7PGYk8EwkqHDrF7Yv36fh/64ovAu+8C11zj8/oeWvr0yduN2A2rV9O/3L17hMZkMBjChhEUV6ZNA763mcg2eTKvhjt2hHdMAPDXX1z6KSiHD7P7yfDhwKOPUgPHjw/D+AJkxQq6BC66KNojMRgMwWKnOWThwrUXlSf++gtYtox/Z2SEd0yAI8PLT0H56CMaNo8+Si/Zli3MPClShMXs0WbFCnZxqVAh2iMxGAzBYiwUV6pVyz8nuju+/trxdyRcXgEIilKcFv7SS3nRTkjgPFlXXUVR+f33MI3VJrm5bESs24MZDIb4xgiKK3YtlBUrGD8pWTJyFkrZskClSrYPWbmSvRmdp9MtWRL44gvWGt57Ly/q0SIlhUF5IygGQ8HACIor1atz7vTMTO/77d3L9N3atSMjKGvWMAXXj1Lbzz9nf6zrr8+7vmJFTkq0ahXw/vshHqcfrFjBpREUg6FgYATFFT2roC+319697FcVCUE5doxzkFxxhe1D9u/nnFbXX+9+Ot1bb+Xc3I89xi6o0WDFCn7chSVH32Ao6BhBcaW6NbuxN7eXUhSUmjWBOnXsx1CWLXNka/niwAHgwQeB1q2BZ59lAUm/fvaOBfB//wdkZXmehEgE+OQTFhN26cLsL6Vsnz4krFhB66Sg9zcyGAoLRlBcsSMox44B2dl5LRRfV2OlgEGDKBK+yMkBbriB+b3793O+0woV2BbeBosXAxMmcO7qpk0971e3Lltrd+7MeRr69QPOnLH1EkFz8CCQmmrcXQZDQcIIiit2XF5793KpBeX0ac7z6Y1jx4CjR4H582k6eOPVV9kxccIETlaVkMAiwaK+s7z37gWGDGELrTFjfO6ORo1Y0D5uHJf33ef7mFCwciWX3bpF5vUMBkP4iYqgiMi/RWSTiGwWkQetdZVFZL6IpFrLSk77PyEi20Rkq4jY9/sEgh0LRQuKdnkBvuMoO3dyeeqUo72uJ+bMoTVyyy2cPnfBAuCNN3wOHaCIHDsGfPed+9iJO4oUYUfUp54CJk5kXCXcLVpWrKA+mgm1DIaCQ8QFRUTaABgJ4EIA7QEMFJGmAB4HsFAp1RTAQus5RKQVgCEAWgPoD2C8iIRvVuYyZZga5U1Q9u3jUlsogO84inM1/Zw53vfdtw9o2NDxvFcvTlzlg4wMVsXfcQdDL/4yZgxbs7z2Gj1uZ8/6fw67rFjBhsSlSoXvNQwGQ2SJhoXSEsAqpdQZpVQOgCUArgUwGMBn1j6fAbjG+nswgGlKqSyl1A5w5sgLwzY6Ebq9XAXlzBkgOZl/u7q8AN+Coi2Uiy7izIveYi7799P68ZN33mH45ZFH/D4UAD1r48fzPDNmMOSTnR3YubyRnc0saBM/MRgKFtEQlE0AeopIFREpDWAAgHoAaiil9gKAtbR8T6gDYLfT8enWunyIyCgRSRKRpIN2qt09Ub16/hjK+PGMXh85QkEpXZo+pfr1gWLFgD/+8H7OnTvZKPG221htqMXJlVOnGJOpUcOvIefmMk346qsZFwmGBx6g62v+fFo7/mR/7d8PrFvnfZ/162n9GEExGAoWERcUpdQWAK8AmA9gLoANAHK8HOIuqdTtJU4p9ZFSKlEplVhNB9cDwV21/NatwLlz7Feybx8tCBFOgt6yJa+SW7cCX33l/pw7d9KNdc01DFpMm0aROnw4737793Ppp4Wydi2NJNcixkAZMYJdir/4AnjvPXvHHD8O9OzJuMhnn3neTxc0moC8wVCwiEpQXin1qVKqk1KqJ4AjAFIB7BeRWgBgLfUVPR20YDR1AYS3ktCdy0vXj6xd6yhq1LRvD2zYADz9NHDTTe5zb3fsYBykRg2gRw/g5ZfZ++Ttt/PupwXFTwtlxgy6rK66yq/DvPLkk7R4Ro9mXaU3cnOBYcOA7dspKCNGMJfAHcuXs8lA3bqhG6vBYIg+0cryqm4tLwBwHYCpAGYBGG7tMhzATOvvWQCGiEgJEWkIoCmA1WEdoHZ5Oft6dHPGpCT3gpKRwRTf3FyKizNK0ULRgfV//pPrypRh0YgzOuDvp4UyYwatg8qV/TrMKyLMXK5Th1nLX35JI80dL70EzJrFZLTFi5m2PHIkPXjO5OZyhkYzf7zBUPCIVh3KdyKSAuAHAPcqpY4CeBlAXxFJBdDXeg6l1GYAXwNIAV1k9yqlwprUqqpVp5NfXw2VclgoS5YwBuIcqOjQgcvTp7lcuzbvCY8c4bm0oNx1FwMN997LW39niyYACyUjg40WQ2mdaKpWZYF/kybAzTcDF1xAy0W/VYA6OmYMs5zvv5+ZWxMmUEPfeivv+TZvplZfdlnox2owGKJLtFxePZRSrZRS7ZVSC611h5VSfZRSTa3lEaf9X1JKNVZKNVdK/RSucZ0/z6LAZ5b25Qrt9tKzJdapw6uhCMVA0749lyKsaHcVlE2buGzShMsiRShCvXvzln/5cse++/Y5Ms1soqdl6dnT9iF+Ubs2DbNZs1gW88orbCu2YgWtlptu4kfw4YeONirduwP9+wMffJDXqlm0iMvevcMzVoPBED1MpbwTCQm8IL41vzX2wynTS7u7rr2Wy3/9i7fqmqpVKTZdujDS7DrRyLx5PHmPHnnXX3IJ1zu7vfbv5/lsVMVrli1j0pk2lMJB0aKMp8ycyalg1qyhaNx8M5PXvv+eY3Dm3ntpPc2c6Vj3yy807gKYydhgMMQ4RlBceO454Oy5BPwPTzgsFO3uGjaMk7M/91z+AydOZP+STp3o13Fuf//zzxQa12kJy5ZlRbxzoaPOIPODZct4mmLF/DosYK6/nlnSP/3EOeF37Mhbh6m58kquHzOGHr+DBykoxt1lMBRMjKC40KwZcOt1p/ERRiFrzyGu1BZKo0YMEpQvn//Avn2Z3tS5M31nycmMnaxbR4vFU+v5669nED81lc/37/crfnLiBA+/5BI/3mQIaNSILq0uXWhkuSMhgVMQ//EHK+/vvJOhqX//O7JjNRgMkcHMKe+Gq68thknflMDa9Qm4GKCFUrq0vRSqdu24TE7mrfncuXzuqfX89dcDDz/MuXmfeIIWih/qsGoVM6ciLSh2ufxyYOxYisi5c+zE36ZNtEcVHOfOnUN6ejrOhrM3jcEQZkqWLIm6deuiWAhdG0ZQ3NDj8hIAgKWbK+Pin39mQUX9+vYm7mjUiGlOGzcyat2uHf1RnTu73/+CC9iO5ZtvgMcf99tCWbaMMX6bne2jwj33AP/4B3MPBgyI9miCJz09HeXKlUODBg0gZjIXQxyilMLhw4eRnp6Ohu781QFiXF5uqFYNaFFsG5am1uQVcMcOYOhQewcXKcLOjLNm0R91//1Mf/LkFwIYbFi3jq+TmelXxHrZMgbj7XYWjhZVqrA3mB+5BjHL2bNnUaVKFSMmhrhFRFClSpWQW9lGUDzQs9ImLDvQFOdzwXYqTz9t/+C2bR3NID1ZJs60asXlrFlctmhh62XOnaPLK1bdXQUZIyaGeCcc32EjKB7oUWc7jqMiUtDK/3xcHSQoVsxeH3ktIDNmcNm8ua2XWbeOBo0RFIPBEAsYQfFAh4bHAQCbynZztKi3ixaUtm3ZPNIXTZvSVbZ0KYP/Nptc6Xm6unf3b3iG+EdEcOutt/79PCcnB9WqVcPAgQP9PtfPP/+MDh06oEOHDihbtiyaN2+ODh06YNiwYW73v/POO5GSkpJv/ezZs9GxY0e0b98erVq1wocffggAmDFjhtv97bB48WKf72nx4sWoUKECOnbsiJYtW+I5d2n9AJKSkvDAAw8ENA6DPQqARzs8NG2ciyI4jy1Ve9gLxjvTti2XdtxdAFCyJAs20tKYt1zEns4vWsTie3/1zhD/lClTBps2bUJmZiZKlSqF+fPno04dt7M6+KRfv37oZ2Uh9urVC6+//joSvUyl+cknn+Rbd+7cOYwaNQqrV69G3bp1kZWVhZ2W23fGjBkYOHAgWmnXbhjo0aMHZs+ejdOnT6NDhw4YOHAgOjv9/nJycpCYmOj1fRmCx1goHihRuwoaIw0pxdr5f3DNmkwBHjXK/jHa7eVH/GTJEqblGqLIgw+y02UoHw8+aOulr7zySsyximKnTp2KoU6JI6tXr8bFF1+Mjh074uKLL8bWrVsBMKHgtttuQ9u2bdGxY0cs0r1w3HDPPfcgMTERrVu3xpgxY/5e36tXLyQlJeXZ9+TJk8jJyUGVKlUAACVKlEDz5s2xYsUKzJo1C6NHj0aHDh2QlpaG9evXo2vXrmjXrh2uvfZaHD16FACwbds2XH755Wjfvj06deqEtLS0PK+xZs0adOzYEdu3b/c45jJlyqBz585IS0vDs88+i1GjRuGKK67AsGHD8lg7p06d+vtzaNeuHb777jsAwLx589CtWzd06tQJN954I065djc1eMUIiieqV0dLbMGW0wH0CBEB/vtf/yZMb9mSS5vxk9WrWX1uBKXwMmTIEEybNg1nz57Fxo0bcdFFF/29rUWLFvj111+xbt06PP/883jyyScBAOPGjQMAJCcnY+rUqRg+fLjHTJ+XXnoJSUlJ2LhxI5YsWYKNGzd6HEvlypUxaNAg1K9fH0OHDsWUKVOQm5uLiy++GIMGDcJrr72G9evXo3Hjxhg2bBheeeUVbNy4EW3btv3bRXXzzTfj3nvvxYYNG7BixQrUcurovWLFCtx9992YOXMmGnmZQe7w4cNYtWoVWluxy7Vr12LmzJn48ssv8+z3wgsvoEKFCkhOTsbGjRtx2WWX4dChQ3jxxRexYMEC/P7770hMTMSbb77p7V9gcMG4vDzRsSNalV2Inw5WQE5OBNJd/bRQFi6kbpkmi1HGdT6bCNKuXTvs3LkTU6dOxQCXAp/jx49j+PDhSE1NhYjgnNWhc9myZbj//vsBUHTq16+PP//8E+3a5bfEv/76a3z00UfIycnB3r17kZKS4nY/zSeffILk5GQsWLAAr7/+OubPn49JkyblG9exY8dw6aWXAgCGDx+OG2+8ESdPnsSePXtwrdUvr2TJkn8fs2XLFowaNQrz5s1DbQ/+3aVLl6Jjx44oUqQIHn/8cbRu3RrffPMNBg0ahFKlSuXbf8GCBZg2bdrfzytVqoTZs2cjJSUF3a2gZHZ2NrqZWeD8wgiKJ1q2RMtxLXFuOEMbNg2HwOndm7EXmylbc+cCHTuGdv4TQ/wxaNAgPProo1i8eDEOO83++fTTT6N3796YPn06du7ciV7WBDTK5nzOO3bswOuvv441a9agUqVKGDFihK2ahbZt26Jt27a49dZb0bBhw3yC4glv46pVqxbOnj2LdevWeRQUHUNxpUyZMh5fzzVtVimFvn37YurUqbbGbMiPcXl5QXuhtmyJwIs1asTqehsZXklJwMqVbBtvKNzcfvvt/9/enUdHVZ8NHP8+BiNLaQDhpUBQKFJK1klCKGBJXghiFZF9q3CoCsjW8rZHUKsCYj09gpYKHqC4EEQQKrgiKsUGoYgtVMMqBAgBNUgiILuY5Xn/uDOTkJkshCEDyfM5Z07CzZ07v4c7mSf33t99HqZOnUq0ZyKI28mTJ70X6Yt/qCclJbF06VIAMjIyOHz4MO38/LV06tQp6tWrR1hYGEePHuX998vuGnHmzBnWF6uanZ6ezs3uG3Tr16/P6dOnAQgLC6Nhw4ZsdE9RXLJkCcnJyfz4xz8mPDyct9xT5y9cuMA5d5+gBg0a8N577/HHP/7xote4HD179uT555/3/vvEiRN06tSJTZs2sX//fgDOnTtHRkZGQF6vprCEUgbP2addu4I7jpKefdapTzl6dLBHYoItPDycSX6qbU6ZMoVHHnmEW2+9lYKCon5048ePp6CggOjoaIYMGUJqaio33HCDz/NjY2OJi4sjMjKS++67z3saqDSqysyZM71TjqdNm+ZNZEOHDmXWrFnExcVx4MABFi9ezOTJk4mJiSE9PZ2pU6cCTnKZM2cOMTExdOnShW883UuBpk2b8u677zJhwgT+XV4/6gp47LHHOHHiBFFRUcTGxpKWlkaTJk1ITU1l2LBhxMTE0KlTJ/bs2XPZr1WTSEUPga81HTp00JIzUSrjllucU0uvvx6AQQVAdrZT/uv3v4dZs4I9mprpiy++oL3n8NWYa5i/97KI/FdVKzW/2o5QyhEf79svK5iWLXOq41/KjGRjjKkKllDKER8PmZnw3XfBHonj1Ved4sRt2wZ7JMYYczFLKOWIj3e+pqcHdxzgXLPftg2GDw/2SIwxxpcllHLExTlfyzrtpepc0xg61OmT5Z7yH3CPP+50DR469Mps3xhjLocllHI0aQItW5adUF56ybm/bc0aGDQI2rQJ/FTjDz90qts/9hg0bhzYbRtjTCBYQqmAxESn26A/337rtLdNSXFayK9eDRcuQP/+4J56f9l++MF5jVtuqXCZJ2OMqXKWUCqge3enX5a/mnRvvQXnzjlTeGvVgl69YPlyyMiAJ58sf9sZGbBvX9nrPP887N3rHAX5uWXA1EAhISG4XC6ioqIYNGiQ9ybAyvjNb37DypUrgdJL03usX7+eTz755JJfo1WrVnz77bd+l3ft2vWiZZ64LtWOHTu8ZfgbNWpE69atcblc9Cil4N3UqVNZt26dz/JPP/2UX/ziF7hcLtq3b8/06dOByscOkJWVVW5MWVlZ1KlTB5fLRUREBGPHjqWwsNBnvezsbAYOHFipcVxpllAqICXF+frRR74/W7nSOcVVvAdXt24wYAC88AKcPet/m7m5MGSIU9LlZz9zXuPUKd/1Tp2CGTOcLsG9el1+LKZ6qFOnDunp6ezcuZPQ0FAWLFhw0c+L38x4KV588cUyy8xfzodqaU6fPs2XX34JOPdFVFZ0dDTp6emkp6dfVJDSX9IAmDFjht9kM3LkSBYuXOj9/x08eDBwZWIvqU2bNqSnp7N9+3Z2797trRzgkZ+fT/Pmzb1/AFxtLKFUQLt2Ts+Rkgnl+HFn2cCBvi1TJk1yphq/+qrv9vbscS72v/22c03k6aedUvQDBvhe0F+4EE6ehFJ6BpkgC2L1eq+uXbuyf/9+1q9fT7du3fj1r39NdHQ0BQUFTJ48mcTERGJiYrwNr1SViRMnEhERQa9evcjJyfFuq3hp+g8++ID4+HhiY2NJSUkhKyuLBQsWMHv2bFwuFxs3biQ3N5cBAwaQmJhIYmIim9znho8dO0bPnj2Ji4vjgQceKLNW1+DBg1mxYgXgW4Y/KyuLrl27Eh8fT3x8vPcDXVWZPHkyUVFRREdHe5/vz4wZM0hMTCQqKooxY8Z4x1L8yKy4nJwcb6XjkJAQIiIi/MZ+6NAhUlJSiImJISUlhcOHDwNw9OhR+vXrR2xsLLGxsT5JKDMzk7i4OLZs2VLqmGvVqkWXLl3Yv38/qampDBo0iN69e9OzZ8+LjnYKCgp48MEHvWX4586dCzhVlpOTk0lISOD222/nyJEjpb5WQKlqtXwkJCRoIA0frtq4ser580XL5s1TBdX//Md3/cJC1YQE1VatVM+cKVqen6/asaPqjTeqfvZZ0fIXX3S2tWhR0bILF1SbN1ft1i2goZjLtHv3bu/3kyapJicH9jFpUvljqFevnqqq5uXl6d13363z5s3TtLQ0rVu3rmZmZqqq6t/+9jd98sknVVX1+++/14SEBM3MzNRVq1Zpjx49ND8/X7/++msNCwvT119/XVVVk5OTdcuWLZqTk6Ph4eHebR07dkxVVadNm6azZs3yjmPYsGG6ceNGVVU9dOiQ/vznP1dV1d/+9rf6xBNPqKrq6tWrFdDc3FyfOG6++Wbdu3evdu7cWVVVXS6X7tq1SyMjI1VV9ezZs3re/UuXkZGhnt/rlStXemP45ptvtGXLlpqdne3d7siRI70xecauqjp8+HB95513fNYp7oknntAGDRpo3759dcGCBd7XLxn7XXfdpampqaqq+tJLL2mfPn1UVXXw4ME6e/ZsVVXNz8/X7777Tg8ePKiRkZG6Z88edblc+vnnn/u8rmcdT9wdOnTQNWvW6KJFi7RFixbeOIqvN2/ePO3fv7/m5eV5Y/3hhx+0c+fOmpOTo6qqy5cv13vvvdfn9VQvfi97AFu1kp+7Vm24gkaOdI42xoyBxYudu9Wfeca5YO+v7YkI/OUvkJzsTPf1tFWYM8fpZbJsWdGUZID77nOukfz1r85riTizx7KzYdGiqonRXLpgVa8/f/48Lvd51q5du3L//ffzySef0LFjR1q3bg04zaK2b9/u/Sv85MmT7Nu3jw0bNjBs2DBCQkJo3rw53bt399n+p59+SlJSkndbjUopa71u3bqLrrmcOnWK06dPs2HDBt544w0AevXqRcOGDUuNpVGjRjRs2JDly5fTvn176tat6/1ZXl4eEydOJD09nZCQEG+xxn/961/eGJo2bUpycjJbtmzh7rvv9tl+WloaM2fO5Ny5cxw/fpzIyEh69+5d6nimTp3KPffcw9q1a1m2bBmvvfaa36KUmzdv9sY4YsQIpkyZAsA///lPXnnlFcA5wgkLC+PEiRPk5ubSp08fVq1a5e3XUtKBAwdwuVyICH369OGOO+4gNTWV2267ze8+WLduHWPHjqWWu79Go0aN2LlzJzt37uS2224DnKOY4r1lriRLKBXUowdMn+48zp93ToNlZjoX40vrEJyUBOPGOR86HTs6j0cfhbvu8r2XRMQ51TFqlNPat3Nn+NOfnGr27veFMV6eayglFS/XrqrMnTvX297XY82aNT6l20tSP+Xd/SksLGTz5s1+e45U5PkeQ4YMYcKECT7l7mfPnk3Tpk3Ztm0bhYWF3j4pWsEahN9//z3jx49n69attGzZkunTp1eoDH+bNm0YN24co0ePpkmTJhe1BihNefGGhYXRsmVLNm3aVGpC8VxDKelSy/BHRkayefPmcsccaHYN5RI8/jj8+c/O/SBPPQWdOkHfvmU/59lnnaQwYoSTJK6/HubP95+E7rkHWrSAsWOdazDZ2c5MsUttaW8MOL3i58+f722ulZGRwdmzZ0lKSmL58uUUFBRw5MgRv22AO3fuzMcff8zBgwcBOH78OHBxKXrwLQPv+TAsXib//fff97b5LU2/fv2YMmWKT/I7efIkzZo147rrrmPJkiXeyQZJSUmsWLGCgoICcnNz2bBhAx07dvTZrid5NG7cmDNnzlToYvZ7773nTVj79u0jJCSEBg0a+MTepUsXb5OupUuX8kt3L6OUlBTmz58POEcHp9yzbUJDQ3nrrbd45ZVXfDpIVlbPnj1ZsGAB+fn5gLOf2rVrR25urjeh5OXlsauKSqZbQrkE110HDz/sTCHetw82bnSWlaVOHXj3XZg40TlCefnl0lue1K7tnAo7cMCZIfaHPzgXaY2pjFGjRhEREUF8fDxRUVE88MAD5Ofn069fP9q2bUt0dDTjxo3zdk8srkmTJixcuJD+/fsTGxvLkCFDAOiYBnqCAAAHE0lEQVTduzdvvvmm98L0nDlz2Lp1KzExMURERHhnm02bNo0NGzYQHx/P2rVruemmm8oca/369XnooYcIDQ29aPn48eNZvHgxnTp1IiMjw/uXer9+/YiJiSE2Npbu3bszc+ZMfvKTn/hst0GDBowePZro6Gj69u1LYmJiuf9vS5Ys8ZbhHzFiBEuXLiUkJMRv7IsWLSImJoYlS5bw3HPPAfDcc8+RlpZGdHQ0CQkJF32Y16tXj9WrVzN79mzefvvtcsdSnlGjRnHTTTd5/y+WLVtGaGgoK1eu5KGHHiI2NhaXy3XFZ6d5WPn6q9CyZXDiBIwfb0cnVyMrX2+qi0CXr7drKFch68RojLkW2SkvY4wxAWEJxZhKqK6nik3NcSXew5ZQjLlEtWvX5tixY5ZUzDVLVTl27Jh3Gnag2DUUYy5ReHg4X331Fbm5ucEeijGVVrt2bcJLm3JaSUFJKCLye2AUoMAO4F6gLrACaAVkAYNV9YR7/UeA+4EC4Heq+mHVj9oYx/XXX++9g9wYU6TKT3mJSAvgd0AHVY0CQoChwMPAR6raFvjI/W9EJML980jgV8A8EQmp6nEbY4wpW7CuodQC6ohILZwjk2ygD7DY/fPFgOce9D7AclW9oKoHgf2A7y2xxhhjgqrKE4qqfg08AxwGjgAnVXUt0FRVj7jXOQL8j/spLYAvi23iK/cyHyIyRkS2ishWO79tjDFVq8qvoYhIQ5yjjtbAd8DrIjK8rKf4WeZ3eo2qLgQWul8nV0QOVXKYjQHf9nI1R02OvybHDhZ/TY7fE/vNld1AMC7K9wAOqmougIi8AXQBjopIM1U9IiLNAE/Xn6+AlsWeH45ziqxMqtqksgMUka2VLT1QHdTk+Gty7GDx1+T4AxF7MK6hHAY6iUhdceoupwBfAO8AI93rjAQ8ldPeAYaKyA0i0hpoC/ynisdsjDGmHFV+hKKq/xaRlcBnQD7wOc5pqh8BfxeR+3GSziD3+rtE5O/Abvf6E1S1cg2zjTHGXDFBuQ9FVacB00osvoBztOJv/aeAp670uIpZWIWvdTWqyfHX5NjB4q/J8V927NW2fL0xxpiqZbW8jDHGBIQlFGOMMQFhCaUYEfmViOwVkf0i8nCwx1MVRCRLRHaISLqIbHUvayQi/xCRfe6vDYM9zkARkZdFJEdEdhZbVmq8IvKI+/2wV0Ru97/Va0cp8U8Xka/d74F0Ebmz2M+qTfwi0lJE0kTkCxHZJSKT3Mur/f4vI/bA7ntVtYdzHSkEOAD8FAgFtgERwR5XFcSdBTQusWwm8LD7+4eBp4M9zgDGmwTEAzvLixeIcL8PbsC5EfcAEBLsGK5A/NOBB/2sW63iB5oB8e7v6wMZ7hir/f4vI/aA7ns7QinSEdivqpmq+gOwHOeO/pqotLpq1zxV3QAcL7G4xtSRKyX+0lSr+FX1iKp+5v7+NM79by2oAfu/jNhLU6nYLaEUqXDNsGpGgbUi8l8RGeNeVlpdterqsuvIVQMTRWS7+5SY55RPtY1fRFoBccC/qWH7v0TsEMB9bwmlSIVrhlUzt6pqPHAHMEFEkoI9oKtITXlPzAfaAC6cgq3PupdXy/hF5EfAKuD/VPVUWav6WXZNx+8n9oDue0soRSpVM+xap6rZ7q85wJs4h7VH3fXUKFFXrboqLd4a8Z5Q1aOqWqCqhcALFJ3aqHbxi8j1OB+oS1X1DffiGrH//cUe6H1vCaXIFqCtiLQWkVCcpl7vBHlMV5SI1BOR+p7vgZ7ATkqvq1Zd1eg6cp4PU7d+OO8BqGbxu2sHvgR8oap/Kfajar//S4s94Ps+2LMPrqYHcCfO7IcDwKPBHk8VxPtTnJkc24BdnpiBG3G6Zu5zf20U7LEGMObXcA7t83D+Cru/rHiBR93vh73AHcEe/xWKfwlOK+7t7g+SZtUxfuCXOKdttgPp7sedNWH/lxF7QPe9lV4xxhgTEHbKyxhjTEBYQjHGGBMQllCMMcYEhCUUY4wxAWEJxRhjTEBYQjHmMonIjcWqtX5TrHrrGRGZF+zxGVNVbNqwMQEkItOBM6r6TLDHYkxVsyMUY64QEflfEVnt/n66iCwWkbXuHjT9RWSmuxfNB+6yGIhIgoh87C7W+WGJO5mNuapZQjGm6rQBeuGUBn8VSFPVaOA80MudVOYCA1U1AXgZeCpYgzXmUtUK9gCMqUHeV9U8EdmB09DtA/fyHUAroB0QBfzDKb1ECE6ZFGOuCZZQjKk6FwBUtVBE8rToAmYhzu+iALtUtXOwBmjM5bBTXsZcPfYCTUSkMzjlxkUkMshjMqbCLKEYc5VQp/X0QOBpEdmGUxG2S3BHZUzF2bRhY4wxAWFHKMYYYwLCEooxxpiAsIRijDEmICyhGGOMCQhLKMYYYwLCEooxxpiAsIRijDEmIP4fta1wgr0TgqwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "均方误差: 10297.951241\n",
      "均方根误差: 101.478822\n",
      "平均绝对误差: 96.158764\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.layers import Dropout, Dense, LSTM\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "import pandas as pd\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.metrics import mean_squared_error, mean_absolute_error\n",
    "import math\n",
    "\n",
    "maotai = pd.read_csv('./SH600519.csv')  # 读取股票文件\n",
    "\n",
    "training_set = maotai.iloc[0:2426 - 300, 2:3].values  # 前(2426-300=2126)天的开盘价作为训练集,表格从0开始计数，2:3 是提取[2:3)列，前闭后开,故提取出C列开盘价\n",
    "test_set = maotai.iloc[2426 - 300:, 2:3].values  # 后300天的开盘价作为测试集\n",
    "\n",
    "# 归一化\n",
    "sc = MinMaxScaler(feature_range=(0, 1))  # 定义归一化：归一化到(0，1)之间\n",
    "training_set_scaled = sc.fit_transform(training_set)  # 求得训练集的最大值，最小值这些训练集固有的属性，并在训练集上进行归一化\n",
    "test_set = sc.transform(test_set)  # 利用训练集的属性对测试集进行归一化\n",
    "\n",
    "x_train = []\n",
    "y_train = []\n",
    "\n",
    "x_test = []\n",
    "y_test = []\n",
    "\n",
    "# 测试集：csv表格中前2426-300=2126天数据\n",
    "# 利用for循环，遍历整个训练集，提取训练集中连续60天的开盘价作为输入特征x_train，第61天的数据作为标签，for循环共构建2426-300-60=2066组数据。\n",
    "for i in range(60, len(training_set_scaled)):\n",
    "    x_train.append(training_set_scaled[i - 60:i, 0])\n",
    "    y_train.append(training_set_scaled[i, 0])\n",
    "# 对训练集进行打乱\n",
    "np.random.seed(7)\n",
    "np.random.shuffle(x_train)\n",
    "np.random.seed(7)\n",
    "np.random.shuffle(y_train)\n",
    "tf.random.set_seed(7)\n",
    "# 将训练集由list格式变为array格式\n",
    "x_train, y_train = np.array(x_train), np.array(y_train)\n",
    "\n",
    "# 使x_train符合RNN输入要求：[送入样本数， 循环核时间展开步数， 每个时间步输入特征个数]。\n",
    "# 此处整个数据集送入，送入样本数为x_train.shape[0]即2066组数据；输入60个开盘价，预测出第61天的开盘价，循环核时间展开步数为60; 每个时间步送入的特征是某一天的开盘价，只有1个数据，故每个时间步输入特征个数为1\n",
    "x_train = np.reshape(x_train, (x_train.shape[0], 60, 1))\n",
    "# 测试集：csv表格中后300天数据\n",
    "# 利用for循环，遍历整个测试集，提取测试集中连续60天的开盘价作为输入特征x_train，第61天的数据作为标签，for循环共构建300-60=240组数据。\n",
    "for i in range(60, len(test_set)):\n",
    "    x_test.append(test_set[i - 60:i, 0])\n",
    "    y_test.append(test_set[i, 0])\n",
    "# 测试集变array并reshape为符合RNN输入要求：[送入样本数， 循环核时间展开步数， 每个时间步输入特征个数]\n",
    "x_test, y_test = np.array(x_test), np.array(y_test)\n",
    "x_test = np.reshape(x_test, (x_test.shape[0], 60, 1))\n",
    "\n",
    "model = tf.keras.Sequential([\n",
    "    LSTM(80, return_sequences=True),\n",
    "    Dropout(0.2),\n",
    "    LSTM(100),\n",
    "    Dropout(0.2),\n",
    "    Dense(1)\n",
    "])\n",
    "\n",
    "model.compile(optimizer=tf.keras.optimizers.Adam(0.001),\n",
    "              loss='mean_squared_error')  # 损失函数用均方误差\n",
    "# 该应用只观测loss数值，不观测准确率，所以删去metrics选项，一会在每个epoch迭代显示时只显示loss值\n",
    "\n",
    "checkpoint_save_path = \"./checkpoint/LSTM_stock.ckpt\"\n",
    "\n",
    "if os.path.exists(checkpoint_save_path + '.index'):\n",
    "    print('-------------load the model-----------------')\n",
    "    model.load_weights(checkpoint_save_path)\n",
    "\n",
    "cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,\n",
    "                                                 save_weights_only=True,\n",
    "                                                 save_best_only=True,\n",
    "                                                 monitor='val_loss')\n",
    "\n",
    "history = model.fit(x_train, y_train, batch_size=64, epochs=50, validation_data=(x_test, y_test), validation_freq=1,\n",
    "                    callbacks=[cp_callback])\n",
    "\n",
    "model.summary()\n",
    "\n",
    "file = open('./weights.txt', 'w')  # 参数提取\n",
    "for v in model.trainable_variables:\n",
    "    file.write(str(v.name) + '\\n')\n",
    "    file.write(str(v.shape) + '\\n')\n",
    "    file.write(str(v.numpy()) + '\\n')\n",
    "file.close()\n",
    "\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "plt.plot(loss, label='Training Loss')\n",
    "plt.plot(val_loss, label='Validation Loss')\n",
    "plt.title('Training and Validation Loss')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n",
    "################## predict ######################\n",
    "# 测试集输入模型进行预测\n",
    "predicted_stock_price = model.predict(x_test)\n",
    "# 对预测数据还原---从（0，1）反归一化到原始范围\n",
    "predicted_stock_price = sc.inverse_transform(predicted_stock_price)\n",
    "# 对真实数据还原---从（0，1）反归一化到原始范围\n",
    "real_stock_price = sc.inverse_transform(test_set[60:])\n",
    "# 画出真实数据和预测数据的对比曲线\n",
    "plt.plot(real_stock_price, color='red', label='MaoTai Stock Price')\n",
    "plt.plot(predicted_stock_price, color='blue', label='Predicted MaoTai Stock Price')\n",
    "plt.title('MaoTai Stock Price Prediction')\n",
    "plt.xlabel('Time')\n",
    "plt.ylabel('MaoTai Stock Price')\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n",
    "##########evaluate##############\n",
    "# calculate MSE 均方误差 ---> E[(预测值-真实值)^2] (预测值减真实值求平方后求均值)\n",
    "mse = mean_squared_error(predicted_stock_price, real_stock_price)\n",
    "# calculate RMSE 均方根误差--->sqrt[MSE]    (对均方误差开方)\n",
    "rmse = math.sqrt(mean_squared_error(predicted_stock_price, real_stock_price))\n",
    "# calculate MAE 平均绝对误差----->E[|预测值-真实值|](预测值减真实值求绝对值后求均值）\n",
    "mae = mean_absolute_error(predicted_stock_price, real_stock_price)\n",
    "print('均方误差: %.6f' % mse)\n",
    "print('均方根误差: %.6f' % rmse)\n",
    "print('平均绝对误差: %.6f' % mae)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
